{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "JAPoU8Sm5E6e"
   },
   "source": [
    "# Tracking Parameters and Metrics for Locally Trained Vertex AI Models\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tvgnzT1CKxrO"
   },
   "source": [
    "## Learning objectives\n",
    "\n",
    "1. Load and process the training dataset.\n",
    "2. Start several model training runs.\n",
    "3. Extract parameters and metrics into a dataframe for analysis.\n",
    "4. Visualize an experiment's parameters and metrics."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "This notebook demonstrates how to track metrics and parameters for ML training jobs and analyze this metadata using Vertex AI SDK for Python."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dataset\n",
    "\n",
    "In this notebook, you will train a simple distributed neural network (DNN) model to predict automobile's miles per gallon (MPG) based on automobile information in the [auto-mpg dataset](https://www.kaggle.com/devanshbesain/exploration-and-analysis-auto-mpg).\n",
    "\n",
    "Each learning objective will correspond to a _#TODO_ in this student lab notebook -- try to complete this notebook first and then review the [solution notebook](../solutions/sdk-metric-parameter-tracking-for-locally-trained-models.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "i7EUnXsZhAGF"
   },
   "source": [
    "## Installation\n",
    "\n",
    "Install the packages required for executing this notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "IaYsrh0Tc17L"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[33m  WARNING: The script tb-gcp-uploader is installed in '/home/jupyter/.local/bin' which is not on PATH.\n",
      "  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33m  WARNING: The script tensorboard is installed in '/home/jupyter/.local/bin' which is not on PATH.\n",
      "  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33m  WARNING: The scripts estimator_ckpt_converter, import_pb_to_tensorboard, saved_model_cli, tensorboard, tf_upgrade_v2, tflite_convert, toco and toco_from_protos are installed in '/home/jupyter/.local/bin' which is not on PATH.\n",
      "  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
      "tfx-bsl 1.10.1 requires google-api-python-client<2,>=1.7.11, but you have google-api-python-client 2.63.0 which is incompatible.\n",
      "tfx-bsl 1.10.1 requires pyarrow<7,>=6, but you have pyarrow 9.0.0 which is incompatible.\n",
      "tfx-bsl 1.10.1 requires tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,<3,>=1.15.5, but you have tensorflow 2.8.0 which is incompatible.\n",
      "tensorflow-transform 1.10.1 requires pyarrow<7,>=6, but you have pyarrow 9.0.0 which is incompatible.\n",
      "tensorflow-transform 1.10.1 requires tensorflow!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,<2.10,>=1.15.5, but you have tensorflow 2.8.0 which is incompatible.\n",
      "tensorflow-serving-api 2.10.0 requires tensorflow<3,>=2.10.0, but you have tensorflow 2.8.0 which is incompatible.\n",
      "tensorflow-io 0.21.0 requires tensorflow<2.7.0,>=2.6.0, but you have tensorflow 2.8.0 which is incompatible.\n",
      "tensorflow-io 0.21.0 requires tensorflow-io-gcs-filesystem==0.21.0, but you have tensorflow-io-gcs-filesystem 0.27.0 which is incompatible.\u001b[0m\u001b[31m\n",
      "\u001b[0m"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "# The Vertex AI Workbench Notebook product has specific requirements\n",
    "IS_WORKBENCH_NOTEBOOK = os.getenv(\"DL_ANACONDA_HOME\") and not os.getenv(\"VIRTUAL_ENV\")\n",
    "IS_USER_MANAGED_WORKBENCH_NOTEBOOK = os.path.exists(\n",
    "    \"/opt/deeplearning/metadata/env_version\"\n",
    ")\n",
    "\n",
    "# Vertex AI Notebook requires dependencies to be installed with '--user'\n",
    "USER_FLAG = \"\"\n",
    "if IS_WORKBENCH_NOTEBOOK:\n",
    "    USER_FLAG = \"--user\"\n",
    "\n",
    "! pip3 install --upgrade google-cloud-aiplatform {USER_FLAG} -q\n",
    "! pip3 install -U tensorflow==2.8 {USER_FLAG} -q"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hhq5zEbGg0XX"
   },
   "source": [
    "### Restart the kernel\n",
    "\n",
    "After you install the additional packages, you need to restart the notebook kernel so it can find the packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "EzrelQZ22IZj"
   },
   "outputs": [],
   "source": [
    "# Automatically restart kernel after installs\n",
    "import os\n",
    "\n",
    "if not os.getenv(\"IS_TESTING\"):\n",
    "    # Automatically restart kernel after installs\n",
    "    import IPython\n",
    "\n",
    "    app = IPython.Application.instance()\n",
    "    app.kernel.do_shutdown(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WReHDGG5g0XY"
   },
   "source": [
    "### Set your project ID\n",
    "\n",
    "**If you don't know your project ID**, you may be able to get your project ID using `gcloud`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "oM1iC_MfAts1"
   },
   "outputs": [],
   "source": [
    "PROJECT_ID = \"[your-project-id]\"  # Replace with your Project ID"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "09021c90b34c"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Updated property [core/project].\n"
     ]
    }
   ],
   "source": [
    "! gcloud config set project $PROJECT_ID"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "region"
   },
   "source": [
    "#### Region\n",
    "\n",
    "You can also change the `REGION` variable, which is used for operations\n",
    "throughout the rest of this notebook.  Below are regions supported for Vertex AI. We recommend that you choose the region closest to you.\n",
    "\n",
    "- Americas: `us-central1`\n",
    "- Europe: `europe-west4`\n",
    "- Asia Pacific: `asia-east1`\n",
    "\n",
    "You may not use a multi-regional bucket for training with Vertex AI. Not all regions provide support for all Vertex AI services.\n",
    "\n",
    "Learn more about [Vertex AI regions](https://cloud.google.com/vertex-ai/docs/general/locations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "region"
   },
   "outputs": [],
   "source": [
    "REGION = \"us-central1\"  # Replace with your region"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "06571eb4063b"
   },
   "source": [
    "#### Timestamp\n",
    "\n",
    "If you are in a live tutorial session, you might be using a shared test account or project. To avoid name collisions between users on resources created, you create a timestamp for each instance session, and append it onto the name of resources you create in this tutorial."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "697568e92bd6"
   },
   "outputs": [],
   "source": [
    "from datetime import datetime\n",
    "\n",
    "TIMESTAMP = datetime.now().strftime(\"%Y%m%d%H%M%S\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XoEqT2Y4DJmf"
   },
   "source": [
    "### Import libraries and define constants"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Y9Uo3tifg1kx"
   },
   "source": [
    "Import required libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "pRUOFELefqf1"
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from google.cloud import aiplatform\n",
    "from tensorflow.python.keras import Sequential, layers\n",
    "from tensorflow.python.keras.utils import data_utils"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xtXZWmYqJ1bh"
   },
   "source": [
    "Define some constants"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "JIOrI-hoJ46P"
   },
   "outputs": [],
   "source": [
    "EXPERIMENT_NAME = \"my-experiment\"  # Replace with the name of your choice"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jWQLXXNVN4Lv"
   },
   "source": [
    "If EXEPERIMENT_NAME is not set, set a default one below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Q1QInYWOKsmo"
   },
   "outputs": [],
   "source": [
    "if EXPERIMENT_NAME == \"\" or EXPERIMENT_NAME is None:\n",
    "    EXPERIMENT_NAME = \"my-experiment-\" + TIMESTAMP"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Xuny18aMcWDb"
   },
   "source": [
    "## Concepts\n",
    "\n",
    "To better understanding how parameters and metrics are stored and organized, we'd like to introduce the following concepts:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NThDci5bp0Uw"
   },
   "source": [
    "### Experiment\n",
    "Experiments describe a context that groups your runs and the artifacts you create into a logical session. For example, in this notebook you create an Experiment and log data to that experiment."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "SAyRR3Ydp4X5"
   },
   "source": [
    "### Run\n",
    "A run represents a single path/avenue that you executed while performing an experiment. A run includes artifacts that you used as inputs or outputs, and parameters that you used in this execution. An Experiment can contain multiple runs. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "l1YW2pgyegFP"
   },
   "source": [
    "## Getting started tracking parameters and metrics\n",
    "\n",
    "You can use the Vertex SDK for Python to track metrics and parameters for models trained locally. \n",
    "\n",
    "In the following example, you train a simple distributed neural network (DNN) model to predict automobile's miles per gallon (MPG) based on automobile information in the [auto-mpg dataset](https://www.kaggle.com/devanshbesain/exploration-and-analysis-auto-mpg)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KPY41M9_AhZU"
   },
   "source": [
    "### Load and process the training dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bfMQSmRuUuX-"
   },
   "source": [
    "Download and process the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "RiQuMv4bmpuV"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading data from http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data\n",
      "32768/30286 [================================] - 0s 1us/step\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:23: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
     ]
    }
   ],
   "source": [
    "# TODO 1\n",
    "def read_data(uri):\n",
    "    dataset_path = data_utils.get_file(\"auto-mpg.data\", uri)\n",
    "    column_names = [\n",
    "        \"MPG\",\n",
    "        \"Cylinders\",\n",
    "        \"Displacement\",\n",
    "        \"Horsepower\",\n",
    "        \"Weight\",\n",
    "        \"Acceleration\",\n",
    "        \"Model Year\",\n",
    "        \"Origin\",\n",
    "    ]\n",
    "    raw_dataset = pd.read_csv(\n",
    "        dataset_path,\n",
    "        names=column_names,\n",
    "        na_values=\"?\",\n",
    "        comment=\"\\t\",\n",
    "        sep=\" \",\n",
    "        skipinitialspace=True,\n",
    "    )\n",
    "    dataset = raw_dataset.dropna()\n",
    "    dataset[\"Origin\"] = dataset[\"Origin\"].map(\n",
    "        lambda x: {1: \"USA\", 2: \"Europe\", 3: \"Japan\"}.get(x)\n",
    "    )\n",
    "    # Process the data\n",
    "    # TODO 1: Your code goes here\n",
    "\n",
    "\n",
    "dataset = read_data(\n",
    "    \"http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Y06J7A7yU21t"
   },
   "source": [
    "Split dataset for training and testing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "p5JBCBKyH-NC"
   },
   "outputs": [],
   "source": [
    "def train_test_split(dataset, split_frac=0.8, random_state=0):\n",
    "    train_dataset = dataset.sample(frac=split_frac, random_state=random_state)\n",
    "    test_dataset = dataset.drop(train_dataset.index)\n",
    "    train_labels = train_dataset.pop(\"MPG\")\n",
    "    test_labels = test_dataset.pop(\"MPG\")\n",
    "\n",
    "    return train_dataset, test_dataset, train_labels, test_labels\n",
    "\n",
    "\n",
    "train_dataset, test_dataset, train_labels, test_labels = train_test_split(dataset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gaNNTFPaU7KT"
   },
   "source": [
    "Normalize the features in the dataset for better model performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "VGq5QCoyIEWJ"
   },
   "outputs": [],
   "source": [
    "def normalize_dataset(train_dataset, test_dataset):\n",
    "    train_stats = train_dataset.describe()\n",
    "    train_stats = train_stats.transpose()\n",
    "\n",
    "    def norm(x):\n",
    "        return (x - train_stats[\"mean\"]) / train_stats[\"std\"]\n",
    "\n",
    "    normed_train_data = norm(train_dataset)\n",
    "    normed_test_data = norm(test_dataset)\n",
    "\n",
    "    return normed_train_data, normed_test_data\n",
    "\n",
    "\n",
    "normed_train_data, normed_test_data = normalize_dataset(train_dataset, test_dataset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "UBXUgxgqA_GB"
   },
   "source": [
    "### Define ML model and training function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "66odBYKrIN4q"
   },
   "outputs": [],
   "source": [
    "# TODO 2\n",
    "# Start the model training\n",
    "def train(\n",
    "    train_data,\n",
    "    train_labels,\n",
    "    num_units=64,\n",
    "    activation=\"relu\",\n",
    "    dropout_rate=0.0,\n",
    "    validation_split=0.2,\n",
    "    epochs=1000,\n",
    "):\n",
    "\n",
    "    model = Sequential(\n",
    "        [\n",
    "            layers.Dense(\n",
    "                num_units,\n",
    "                activation=activation,\n",
    "                input_shape=[len(train_dataset.keys())],\n",
    "            ),\n",
    "            layers.Dropout(rate=dropout_rate),\n",
    "            layers.Dense(num_units, activation=activation),\n",
    "            layers.Dense(1),\n",
    "        ]\n",
    "    )\n",
    "\n",
    "    model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[\"mae\", \"mse\"])\n",
    "    print(model.summary())\n",
    "\n",
    "    history = # TODO 2: Your code goes here\n",
    "    )\n",
    "\n",
    "    return model, history"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "O8XJZB3gR8eL"
   },
   "source": [
    "### Initialize the Vertex AI SDK for Python and create an Experiment\n",
    "\n",
    "Initialize the *client* for Vertex AI and create an experiment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "id": "o_wnT10RJ7-W"
   },
   "outputs": [],
   "source": [
    "# TODO 3\n",
    "# Initialize the Vertex AI SDK for Python\n",
    "# TODO 3: Your code goes here"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "u-iTnzt3B6Z_"
   },
   "source": [
    "### Start several model training runs\n",
    "\n",
    "Training parameters and metrics are logged for each run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "i2wnpu8_7JfV"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-0 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:google.cloud.aiplatform.metadata.experiment_resources:Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-0 to Experiment: my-experiment\n",
      "2022-10-14 13:13:49.748848: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/nccl2/lib:/usr/local/cuda/extras/CUPTI/lib64\n",
      "2022-10-14 13:13:49.748909: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n",
      "2022-10-14 13:13:49.748948: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (tensorflow-2-6-20221014-181307): /proc/driver/nvidia/version does not exist\n",
      "2022-10-14 13:13:49.749275: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense (Dense)                (None, 16)                160       \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 16)                272       \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 1)                 17        \n",
      "=================================================================\n",
      "Total params: 449\n",
      "Trainable params: 449\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Epoch 1/3\n",
      "8/8 [==============================] - 1s 28ms/step - loss: 617.4069 - mae: 23.6673 - mse: 617.4069 - val_loss: 636.9465 - val_mae: 24.0385 - val_mse: 636.9465\n",
      "Epoch 2/3\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 609.2305 - mae: 23.4660 - mse: 609.2305 - val_loss: 628.8822 - val_mae: 23.8232 - val_mse: 628.8822\n",
      "Epoch 3/3\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 601.7635 - mae: 23.2596 - mse: 601.7635 - val_loss: 621.3492 - val_mae: 23.6198 - val_mse: 621.3492\n",
      "3/3 - 0s - loss: 639.9313 - mae: 23.9138 - mse: 639.9313\n",
      "Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-1 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:google.cloud.aiplatform.metadata.experiment_resources:Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-1 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_3 (Dense)              (None, 16)                160       \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 16)                272       \n",
      "_________________________________________________________________\n",
      "dense_5 (Dense)              (None, 1)                 17        \n",
      "=================================================================\n",
      "Total params: 449\n",
      "Trainable params: 449\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Epoch 1/10\n",
      "8/8 [==============================] - 1s 23ms/step - loss: 643.3784 - mae: 24.2875 - mse: 643.3784 - val_loss: 667.1874 - val_mae: 24.7708 - val_mse: 667.1874\n",
      "Epoch 2/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 630.0400 - mae: 24.0101 - mse: 630.0400 - val_loss: 651.8270 - val_mae: 24.4581 - val_mse: 651.8270\n",
      "Epoch 3/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 615.6971 - mae: 23.7140 - mse: 615.6971 - val_loss: 637.3712 - val_mae: 24.1630 - val_mse: 637.3712\n",
      "Epoch 4/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 602.8894 - mae: 23.4492 - mse: 602.8893 - val_loss: 623.2484 - val_mae: 23.8767 - val_mse: 623.2484\n",
      "Epoch 5/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 591.3527 - mae: 23.2125 - mse: 591.3527 - val_loss: 609.3730 - val_mae: 23.5982 - val_mse: 609.3730\n",
      "Epoch 6/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 579.0091 - mae: 22.9631 - mse: 579.0091 - val_loss: 595.3837 - val_mae: 23.3194 - val_mse: 595.3837\n",
      "Epoch 7/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 566.3429 - mae: 22.7050 - mse: 566.3429 - val_loss: 581.2571 - val_mae: 23.0397 - val_mse: 581.2571\n",
      "Epoch 8/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 554.8348 - mae: 22.4744 - mse: 554.8348 - val_loss: 566.8028 - val_mae: 22.7545 - val_mse: 566.8028\n",
      "Epoch 9/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 541.6411 - mae: 22.2132 - mse: 541.6411 - val_loss: 551.5903 - val_mae: 22.4550 - val_mse: 551.5903\n",
      "Epoch 10/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 527.8411 - mae: 21.9327 - mse: 527.8411 - val_loss: 535.4055 - val_mae: 22.1358 - val_mse: 535.4055\n",
      "3/3 - 0s - loss: 551.5436 - mae: 22.4262 - mse: 551.5436\n",
      "Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-2 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:google.cloud.aiplatform.metadata.experiment_resources:Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-2 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_2\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_6 (Dense)              (None, 16)                160       \n",
      "_________________________________________________________________\n",
      "dropout_2 (Dropout)          (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 16)                272       \n",
      "_________________________________________________________________\n",
      "dense_8 (Dense)              (None, 1)                 17        \n",
      "=================================================================\n",
      "Total params: 449\n",
      "Trainable params: 449\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Epoch 1/10\n",
      "8/8 [==============================] - 1s 52ms/step - loss: 625.0442 - mae: 23.7135 - mse: 625.0442 - val_loss: 644.3045 - val_mae: 24.0982 - val_mse: 644.3045\n",
      "Epoch 2/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 616.0950 - mae: 23.5314 - mse: 616.0950 - val_loss: 636.6922 - val_mae: 23.9438 - val_mse: 636.6922\n",
      "Epoch 3/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 609.2006 - mae: 23.3937 - mse: 609.2006 - val_loss: 629.5571 - val_mae: 23.7980 - val_mse: 629.5571\n",
      "Epoch 4/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 602.5281 - mae: 23.2569 - mse: 602.5281 - val_loss: 622.8041 - val_mae: 23.6555 - val_mse: 622.8041\n",
      "Epoch 5/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 596.6069 - mae: 23.1239 - mse: 596.6069 - val_loss: 616.0606 - val_mae: 23.5142 - val_mse: 616.0606\n",
      "Epoch 6/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 590.3679 - mae: 22.9926 - mse: 590.3679 - val_loss: 609.1794 - val_mae: 23.3677 - val_mse: 609.1794\n",
      "Epoch 7/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 583.2376 - mae: 22.8445 - mse: 583.2376 - val_loss: 602.2222 - val_mae: 23.2179 - val_mse: 602.2222\n",
      "Epoch 8/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 577.3398 - mae: 22.7058 - mse: 577.3398 - val_loss: 594.8432 - val_mae: 23.0558 - val_mse: 594.8432\n",
      "Epoch 9/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 571.1152 - mae: 22.5637 - mse: 571.1152 - val_loss: 586.9722 - val_mae: 22.8813 - val_mse: 586.9722\n",
      "Epoch 10/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 562.7604 - mae: 22.3851 - mse: 562.7604 - val_loss: 578.4148 - val_mae: 22.6892 - val_mse: 578.4148\n",
      "3/3 - 0s - loss: 600.6901 - mae: 23.0760 - mse: 600.6901\n",
      "Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-3 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:google.cloud.aiplatform.metadata.experiment_resources:Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-3 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_3\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_9 (Dense)              (None, 32)                320       \n",
      "_________________________________________________________________\n",
      "dropout_3 (Dropout)          (None, 32)                0         \n",
      "_________________________________________________________________\n",
      "dense_10 (Dense)             (None, 32)                1056      \n",
      "_________________________________________________________________\n",
      "dense_11 (Dense)             (None, 1)                 33        \n",
      "=================================================================\n",
      "Total params: 1,409\n",
      "Trainable params: 1,409\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Epoch 1/10\n",
      "8/8 [==============================] - 1s 23ms/step - loss: 602.7513 - mae: 23.3620 - mse: 602.7513 - val_loss: 620.4725 - val_mae: 23.6947 - val_mse: 620.4725\n",
      "Epoch 2/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 590.5832 - mae: 23.0727 - mse: 590.5832 - val_loss: 606.6851 - val_mae: 23.3659 - val_mse: 606.6851\n",
      "Epoch 3/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 577.7888 - mae: 22.7695 - mse: 577.7888 - val_loss: 593.0513 - val_mae: 23.0443 - val_mse: 593.0513\n",
      "Epoch 4/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 564.5516 - mae: 22.4431 - mse: 564.5516 - val_loss: 578.6909 - val_mae: 22.7094 - val_mse: 578.6909\n",
      "Epoch 5/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 550.7720 - mae: 22.1140 - mse: 550.7720 - val_loss: 562.2185 - val_mae: 22.3230 - val_mse: 562.2185\n",
      "Epoch 6/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 536.0137 - mae: 21.7566 - mse: 536.0137 - val_loss: 542.7650 - val_mae: 21.8578 - val_mse: 542.7650\n",
      "Epoch 7/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 514.7330 - mae: 21.2328 - mse: 514.7330 - val_loss: 519.3974 - val_mae: 21.2839 - val_mse: 519.3974\n",
      "Epoch 8/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 493.9228 - mae: 20.7112 - mse: 493.9228 - val_loss: 491.9206 - val_mae: 20.5891 - val_mse: 491.9206\n",
      "Epoch 9/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 466.3656 - mae: 20.0198 - mse: 466.3656 - val_loss: 460.1176 - val_mae: 19.7633 - val_mse: 460.1176\n",
      "Epoch 10/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 435.8416 - mae: 19.2087 - mse: 435.8416 - val_loss: 423.9521 - val_mae: 18.8030 - val_mse: 423.9521\n",
      "3/3 - 0s - loss: 447.8495 - mae: 19.3754 - mse: 447.8495\n",
      "Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-4 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:google.cloud.aiplatform.metadata.experiment_resources:Associating projects/62613708561/locations/us-central1/metadataStores/default/contexts/my-experiment-auto-mpg-local-run-4 to Experiment: my-experiment\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_4\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_12 (Dense)             (None, 32)                320       \n",
      "_________________________________________________________________\n",
      "dropout_4 (Dropout)          (None, 32)                0         \n",
      "_________________________________________________________________\n",
      "dense_13 (Dense)             (None, 32)                1056      \n",
      "_________________________________________________________________\n",
      "dense_14 (Dense)             (None, 1)                 33        \n",
      "=================================================================\n",
      "Total params: 1,409\n",
      "Trainable params: 1,409\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Epoch 1/10\n",
      "8/8 [==============================] - 1s 24ms/step - loss: 600.9067 - mae: 23.3580 - mse: 600.9067 - val_loss: 613.7952 - val_mae: 23.6214 - val_mse: 613.7952\n",
      "Epoch 2/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 584.4291 - mae: 23.0132 - mse: 584.4291 - val_loss: 598.7891 - val_mae: 23.3039 - val_mse: 598.7891\n",
      "Epoch 3/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 568.9881 - mae: 22.6897 - mse: 568.9881 - val_loss: 583.4426 - val_mae: 22.9813 - val_mse: 583.4426\n",
      "Epoch 4/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 553.4980 - mae: 22.3470 - mse: 553.4980 - val_loss: 566.7316 - val_mae: 22.6310 - val_mse: 566.7316\n",
      "Epoch 5/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 536.8406 - mae: 22.0054 - mse: 536.8406 - val_loss: 548.1111 - val_mae: 22.2403 - val_mse: 548.1111\n",
      "Epoch 6/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 516.7618 - mae: 21.5836 - mse: 516.7618 - val_loss: 526.3530 - val_mae: 21.7795 - val_mse: 526.3530\n",
      "Epoch 7/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 493.5110 - mae: 21.0683 - mse: 493.5110 - val_loss: 501.2724 - val_mae: 21.2385 - val_mse: 501.2724\n",
      "Epoch 8/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 467.4046 - mae: 20.5072 - mse: 467.4046 - val_loss: 472.3132 - val_mae: 20.5969 - val_mse: 472.3132\n",
      "Epoch 9/10\n",
      "8/8 [==============================] - 0s 5ms/step - loss: 438.9635 - mae: 19.8487 - mse: 438.9635 - val_loss: 438.7218 - val_mae: 19.8289 - val_mse: 438.7218\n",
      "Epoch 10/10\n",
      "8/8 [==============================] - 0s 4ms/step - loss: 408.6530 - mae: 19.1253 - mse: 408.6530 - val_loss: 401.8991 - val_mae: 18.9472 - val_mse: 401.8991\n",
      "3/3 - 0s - loss: 408.6072 - mae: 19.0971 - mse: 408.6072\n"
     ]
    }
   ],
   "source": [
    "parameters = [\n",
    "    {\"num_units\": 16, \"epochs\": 3, \"dropout_rate\": 0.1},\n",
    "    {\"num_units\": 16, \"epochs\": 10, \"dropout_rate\": 0.1},\n",
    "    {\"num_units\": 16, \"epochs\": 10, \"dropout_rate\": 0.2},\n",
    "    {\"num_units\": 32, \"epochs\": 10, \"dropout_rate\": 0.1},\n",
    "    {\"num_units\": 32, \"epochs\": 10, \"dropout_rate\": 0.2},\n",
    "]\n",
    "\n",
    "for i, params in enumerate(parameters):\n",
    "    aiplatform.start_run(run=f\"auto-mpg-local-run-{i}\")\n",
    "    aiplatform.log_params(params)\n",
    "    model, history = train(\n",
    "        normed_train_data,\n",
    "        train_labels,\n",
    "        num_units=params[\"num_units\"],\n",
    "        activation=\"relu\",\n",
    "        epochs=params[\"epochs\"],\n",
    "        dropout_rate=params[\"dropout_rate\"],\n",
    "    )\n",
    "    aiplatform.log_metrics(\n",
    "        {metric: values[-1] for metric, values in history.history.items()}\n",
    "    )\n",
    "\n",
    "    loss, mae, mse = model.evaluate(normed_test_data, test_labels, verbose=2)\n",
    "    aiplatform.log_metrics({\"eval_loss\": loss, \"eval_mae\": mae, \"eval_mse\": mse})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jZLrJZTfL7tE"
   },
   "source": [
    "### Extract parameters and metrics into a dataframe for analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "A1PqKxlpOZa2"
   },
   "source": [
    "We can also extract all parameters and metrics associated with any Experiment into a dataframe for further analysis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "id": "jbRf1WoH_vbY"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>experiment_name</th>\n",
       "      <th>run_name</th>\n",
       "      <th>run_type</th>\n",
       "      <th>state</th>\n",
       "      <th>param.num_units</th>\n",
       "      <th>param.epochs</th>\n",
       "      <th>param.dropout_rate</th>\n",
       "      <th>metric.mse</th>\n",
       "      <th>metric.loss</th>\n",
       "      <th>metric.val_mse</th>\n",
       "      <th>metric.mae</th>\n",
       "      <th>metric.eval_mae</th>\n",
       "      <th>metric.eval_loss</th>\n",
       "      <th>metric.val_loss</th>\n",
       "      <th>metric.eval_mse</th>\n",
       "      <th>metric.val_mae</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>my-experiment</td>\n",
       "      <td>auto-mpg-local-run-4</td>\n",
       "      <td>system.ExperimentRun</td>\n",
       "      <td>RUNNING</td>\n",
       "      <td>32.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>408.652954</td>\n",
       "      <td>408.652954</td>\n",
       "      <td>401.899109</td>\n",
       "      <td>19.125265</td>\n",
       "      <td>19.097095</td>\n",
       "      <td>408.607178</td>\n",
       "      <td>401.899109</td>\n",
       "      <td>408.607178</td>\n",
       "      <td>18.947227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>my-experiment</td>\n",
       "      <td>auto-mpg-local-run-3</td>\n",
       "      <td>system.ExperimentRun</td>\n",
       "      <td>COMPLETE</td>\n",
       "      <td>32.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>435.841644</td>\n",
       "      <td>435.841644</td>\n",
       "      <td>423.952118</td>\n",
       "      <td>19.208683</td>\n",
       "      <td>19.375414</td>\n",
       "      <td>447.849457</td>\n",
       "      <td>423.952118</td>\n",
       "      <td>447.849457</td>\n",
       "      <td>18.802963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>my-experiment</td>\n",
       "      <td>auto-mpg-local-run-2</td>\n",
       "      <td>system.ExperimentRun</td>\n",
       "      <td>COMPLETE</td>\n",
       "      <td>16.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>562.760376</td>\n",
       "      <td>562.760376</td>\n",
       "      <td>578.414795</td>\n",
       "      <td>22.385078</td>\n",
       "      <td>23.075970</td>\n",
       "      <td>600.690125</td>\n",
       "      <td>578.414795</td>\n",
       "      <td>600.690125</td>\n",
       "      <td>22.689171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>my-experiment</td>\n",
       "      <td>auto-mpg-local-run-1</td>\n",
       "      <td>system.ExperimentRun</td>\n",
       "      <td>COMPLETE</td>\n",
       "      <td>16.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>527.841125</td>\n",
       "      <td>527.841125</td>\n",
       "      <td>535.405518</td>\n",
       "      <td>21.932697</td>\n",
       "      <td>22.426222</td>\n",
       "      <td>551.543640</td>\n",
       "      <td>535.405518</td>\n",
       "      <td>551.543640</td>\n",
       "      <td>22.135757</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>my-experiment</td>\n",
       "      <td>auto-mpg-local-run-0</td>\n",
       "      <td>system.ExperimentRun</td>\n",
       "      <td>COMPLETE</td>\n",
       "      <td>16.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>601.763550</td>\n",
       "      <td>601.763550</td>\n",
       "      <td>621.349182</td>\n",
       "      <td>23.259560</td>\n",
       "      <td>23.913794</td>\n",
       "      <td>639.931274</td>\n",
       "      <td>621.349182</td>\n",
       "      <td>639.931274</td>\n",
       "      <td>23.619804</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  experiment_name              run_name              run_type     state  \\\n",
       "0   my-experiment  auto-mpg-local-run-4  system.ExperimentRun   RUNNING   \n",
       "1   my-experiment  auto-mpg-local-run-3  system.ExperimentRun  COMPLETE   \n",
       "2   my-experiment  auto-mpg-local-run-2  system.ExperimentRun  COMPLETE   \n",
       "3   my-experiment  auto-mpg-local-run-1  system.ExperimentRun  COMPLETE   \n",
       "4   my-experiment  auto-mpg-local-run-0  system.ExperimentRun  COMPLETE   \n",
       "\n",
       "   param.num_units  param.epochs  param.dropout_rate  metric.mse  metric.loss  \\\n",
       "0             32.0          10.0                 0.2  408.652954   408.652954   \n",
       "1             32.0          10.0                 0.1  435.841644   435.841644   \n",
       "2             16.0          10.0                 0.2  562.760376   562.760376   \n",
       "3             16.0          10.0                 0.1  527.841125   527.841125   \n",
       "4             16.0           3.0                 0.1  601.763550   601.763550   \n",
       "\n",
       "   metric.val_mse  metric.mae  metric.eval_mae  metric.eval_loss  \\\n",
       "0      401.899109   19.125265        19.097095        408.607178   \n",
       "1      423.952118   19.208683        19.375414        447.849457   \n",
       "2      578.414795   22.385078        23.075970        600.690125   \n",
       "3      535.405518   21.932697        22.426222        551.543640   \n",
       "4      621.349182   23.259560        23.913794        639.931274   \n",
       "\n",
       "   metric.val_loss  metric.eval_mse  metric.val_mae  \n",
       "0       401.899109       408.607178       18.947227  \n",
       "1       423.952118       447.849457       18.802963  \n",
       "2       578.414795       600.690125       22.689171  \n",
       "3       535.405518       551.543640       22.135757  \n",
       "4       621.349182       639.931274       23.619804  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# TODO 4\n",
    "# Extract all parameters and metrics into a dataframe\n",
    "experiment_df = # TODO 4: Your code goes here\n",
    "experiment_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EYuYgqVCMKU1"
   },
   "source": [
    "### Visualizing an experiment's parameters and metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "id": "r8orCj8iJuO1"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7feac61ef950>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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ePzxxzl9+vRdbfdBp2KiiIiIiIiIiOQwDMjKKpwvwyhQqN9//z0tWrSgRIkSlC5dms6dO5OQkADkFJFMJhMXL1407x8TE4PJZCIxMZHo6GhefPFFLl26hMlkwmQyERERAcCFCxfo1asXJUuWxMXFhQ4dOnD48OFbxpLb3po1a2jQoAHOzs60adOGc+fO8d1331GrVi3c3d155plnuHLlivm44OBgBg4cyMCBA83XMXbsWIw89yIpKYlOnTrh7OxMlSpVWLx4MT4+PkRGRhbofv344480adIER0dHypcvz8iRI8nMzDRvz87OZvLkyfj6+uLo6EilSpWYOHGiefuIESN45JFHcHFxoWrVqoSHh5ORkVGgGHKvNywsjDJlyvDYY4/lOyT74sWLmEwmoqOjLe5vVFQUAQEBuLi4EBQURHx8/C3bW7RoEQMGDMDf35+aNWsyd+5csrOziYqKKlDcYsmusAMQERERERERkSIiOxt+2ls4bbdoALa2Vu+emppKWFgYdevWJTU1lXHjxtGtWzernhMYFBREZGQk48aNMxekXF1dAejTpw+HDx9m1apVuLu7M2LECDp27MjBgwext7e/5XkjIiKYOXMmLi4udO/ene7du+Po6MjixYtJSUmhW7duzJgxgxEjRpiP+eyzz+jbty/bt29n165d9O/fn8qVKxMSEgJAr169SE5OJjo6Gnt7e8LCwjh37pzV9wng9OnTdOzYkT59+rBw4ULi4uIICQnBycnJXEQdNWoUc+fOZdq0abRo0YKkpCTi4uLM53Bzc2PBggVUqFCB/fv3ExISgpubG8OHDy9QLJ999hkvv/wymzdvtiiaWmPMmDFMnToVDw8PQkNDeemll9i8ebPVx1+5coWMjAxKlSpVoHbFkoqJIiIiIiIiInLfefLJJy2W58+fT9myZTl48OBtj3VwcKB48eKYTCbKlStnXp9bRNy8eTNBQUFATu82b29vVq5cydNPP33L806YMIHmzZsD0LdvX0aNGkVCQgJVq1YF4KmnnmLDhg0WxURvb2+mTZuGyWSiRo0a7N+/n2nTphESEkJcXBzr1q1j586dBAQEADBv3jyqV69uxR3606xZs/D29mbmzJmYTCZq1qzJmTNnGDFiBOPGjSM1NZXp06czc+ZMevfuDUC1atVo0aKF+Rxjx441f+/j48OwYcNYtmxZgYuJ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9PR08zM009PTOX36NDExMbi6uqr4+DfceoqdQhIcHIxhGDd85RYScw0YMIDExESuXbvG7t27adWqVeEELCIiIiIiIiL3jI2NDUuXLmX37t3UqVOHoUOHMmXKFPN2e3t7lixZQlxcHPXr12fy5MlMmDDB4hxBQUGEhobSo0cPPDw8zJOCfPrppzRq1IjOnTsTGBiIYRisXr36rs2w3atXL65evUqTJk145ZVXGDRoEP379zdvX7hwIZ6enrRq1Ypu3boREhKCm5tbgSYd8fLyYvXq1ezYsYP69esTGhpK3759LYp24eHhDBs2jHHjxlGrVi169Ohhfh5h165dGTp0KAMHDsTf358tW7YQHh5+x+7BJ598QkZGBgEBAQwZMuSG1+qvOnPmDA0aNKBBgwYkJSXx3nvv0aBBg3x7X4r1TMbNBuA/5C5fvkzx4sWJioqiTZs2hR2OiOSxY8cOmjZtyvbt22nSpElhhyMi11GOihRdyk+Rou1e52haWhrHjh2jSpUqmg23kAQHB+Pv709kZKTVx5w6dQpvb2/WrVt3ywlTpOBulRPr16+nbdu2XLp06aYTzzwsiuQwZxERERERERERySlipaSkULduXZKSkhg+fDg+Pj4anSmFRsVEEREREREREZEiKiMjg9GjR3P06FHc3NwICgpi0aJFd23YtcjtqJgoIiIiIiIiIlIIoqOjb7tP+/btad++/d0PRsRKRXICFhERERERERERESl6VEwUERERERERERERq6iYKCIiIiIiIiIiIlZRMVFERERERERERESsomKiiIiIiIiIiIiIWEXFRBEREREREREREbGKiokiIiIiIiIiIg+QxMRETCYTMTEx96zNiIgI/P3971l7UnhUTBQRERERERGRh86CBQsoUaJEYYchd9ny5cvx8/PD0dERPz8/VqxYUdgh3fdUTBQRERERERERkXsuPT39rp5/69at9OjRgxdeeIF9+/bxwgsv0L17d7Zv335X233QqZgoIiIiIiIiIgAYBqSmFs6XYRQs1u+//54WLVpQokQJSpcuTefOnUlISAAgOjoak8nExYsXzfvHxMRgMplITEwkOjqaF198kUuXLmEymTCZTERERABw4cIFevXqRcmSJXFxcaFDhw4cPnz4lrHktrdmzRoaNGiAs7Mzbdq04dy5c3z33XfUqlULd3d3nnnmGa5c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FxdH/fr1mTx5ssXMxZAzo3NoaCg9evTAw8PDPCnIp59+SqNGjejcuTOBgYEYhsHq1atvGLJ8p/Tq1YurV6/SpEkTXnnlFQYNGkT//v3N2xcuXIinpyetWrWiW7duhISE4ObmdtNJR/Lj5eXF6tWr2bFjB/Xr1yc0NJS+fftaFO3Cw8MZNmwY48aNo1atWvTo0cP8fMeuXbsydOhQBg4ciL+/P1u2bCE8PPyO3YNPPvmEjIwMAgICGDJkyA2v1V8VFBTE0qVL+fTTT6lXrx4LFixg2bJlFs/ElIIzGTcbgP+Qu3z5MsWLFycqKoo2bdoUdjgikseOHTto2rQp27dvp0mTJoUdjohcRzkqUnQpP0WKtnudo2lpaRw7dowqVaoUqDAld05wcDD+/v5ERkZafcypU6fw9vZm3bp1t5wwRQruVjmxfv162rZty6VLl3B3dy+kCIsGPTNRRERERERERKSIWr9+PSkpKdStW5ekpCSGDx+Oj48PrVq1KuzQ5CGlYqKIiIiIiIiISBGVkZHB6NGjOXr0KG5ubgQFBbFo0aK7Nuxa5HZUTBQRERERERERKQTR0dG33ad9+/a0b9/+7gcjYiVNwCIiIiIiIiIiIiJWUTFRRERERERE5CGWnZ1d2CGIFAmao9g6GuYsIiIiIiIi8hBycHDAxsaGM2fO4OHhgYODAyaTqbDDEikUhmHw22+/YTKZ9DzK21AxUUREREREROQhZGNjQ5UqVUhKSuLMmTOFHY5IoTOZTFSsWBFbW9vCDqVIUzFRRERERERE5CHl4OBApUqVyMzMJCsrq7DDESlU9vb2KiRaQcVEERERERERkYdY7rBODe0UEWtoAhYRERERERERERGxioqJIiIiIiIiIiIiYhUVE0VERERERERERMQqKiaKiIiIiIiIiIiIVVRMFBEREREREREREauomCgiIiIiIiIiIiJWUTFRRERERERERERErKJiooiIiIiIiIiIiFhFxUQRERERERERERGxioqJIiIiIiIiIiIiYhUVE0VERERERERERMQqKiaKiIiIiIiIiIiIVVRMFBEREREREREREauomCgiIiIiIiIiIiJWUTFRRERERERERERErKJiooiIiIiIiIiIiFhFxUQRERERERERERGxioqJIiIiIiIiIiIiYhUVE0VERERERERERMQqKiaKiIiIiIiIiIiIVVRMFBEREREREREREauomCgiIiIiIiIiIiJWUTFRRERERERERERErKJiooiIiIiIiIiIiFhFxUQRERERERERERGxioqJIiIiIiIiIiIiYhUVE0VERERERERERMQqKiaKiIiIiIiIiIiIVVRMFBEREREREREREauomCgiIiIiIiIiIiJWUTFRRERERERERERErKJiooiIiIiIiIiIiFhFxUQRERERERERERGxioqJIiIiIiIiIiIiYhUVE0VERERERERERMQqKiaKiIiIiIiIiIiIVR7oYmK3bt0oWbIkTz31VGGHIiIiIiIiIiIict97oIuJgwcPZuHChYUdhoiIiIiIiIiIyAPhgS4mPvroo7i5uRV2GCIiIiIiIiIiIg+EIllM3LhxI126dKFChQqYTCZWrlyZ736zZs2iSpUqODk50ahRIzZt2nRvAxUREREREREREXmIFMliYmpqKvXr12fmzJk33WfZsmW8+uqrjBkzhr1799KyZUs6dOjAiRMn7mGkIiIiIiIiIiIiDw+7wg4gPx06dKBDhw633Of999+nb9++9OvXD4DIyEjWrFnDRx99xDvvvFPgNq9du8a1a9fMy5cvXwYgMzOTjIyMAp9PRO6e3JzMyMhQfooUQcpRkaJL+SlStClHRYquzMzMwg6hyCiSxcTbSU9PZ/fu3YwcOdJi/eOPP86WLVv+0jnfeecd3njjjRvW79q1i6tXr/6lc4rI3ZGQkADA9u3bSU5OLuRoROR6ylGRokv5KVK0KUdFiq4DBw4UdghFxn1ZTExOTiYrKwtPT0+L9Z6enpw9e9a83L59e/bs2UNqaioVK1ZkxYoVNG7cON9zjho1irCwMPPy5cuX8fb2JiAggEcfffTuXIiI/CU7duwAoGnTpjRp0qSQoxGR6ylHRYou5adI0aYcFSm6nJ2dCzuEIuOeFRMjIiLy7fmX186dOwkICLD6nCaTyWLZMAyLdWvWrLH6XI6Ojjg6Ot6w3s7ODnt7e6vPIyJ3X25O2tvbKz9FiiDlqEjRpfwUKdqUoyJFl53dfdkf7664Z3di4MCB9OzZ85b7+Pj4WHWuMmXKYGtra9ELEeDcuXM39FYUERERERERERGRO+OeFRPLlClDmTJl7si5HBwcaNSoEWvXrqVbt27m9WvXrqVr1653pA0RERERERERERGxVCT7aKakpHDkyBHz8rFjx4iJiaFUqVJUqlQJgLCwMF544QUCAgIIDAxkzpw5nDhxgtDQ0MIKW0RERERERERE5IFWJIuJu3btspj0JHdilN69e7NgwQIAevTowfnz53nzzTdJSkqiTp06rF69msqVKxdGyCIiIiIiIiIiIg+8IllMDA4OxjCM2+43YMAABgwYcA8iEhEREREREREREZvCDkBERERERERERETuDyomioiIiIiIiIiIiFVUTBQRERERERERERGrqJgoIiIiIiIiIiIiVlExUURERERERERERKyiYqKIiIiIiIiIiIhYRcVEERERERERERERsYqKiSIiIiIiIiIiImIVFRNFRERERERERETEKiomioiIiIiIiIiIiFVUTBQRERERERERERGrqJgoIiIiIiIiIiIiVlExUURERERERERERKyiYqKIiIiIiIiIiIhYRcVEERERERERERERsYqKiSIiIiIiIiIiImIVFRNFRERERERERETEKiomioiIiIiIiIiIiFVUTBQRERERERERERGrqJgoIiIiIiIiIiIiVlExUURERERERERERKyiYqKIiIiIiIiIiIhYRcVEERERERERERERsYpdYQdQVBmGAUBqaiqXL18u5GhEJK+UlBTzv8pPkaJHOSpSdCk/RYo25ahI0ZWamgr8WS96mJkM3YV8HT16lGrVqhV2GCIiIiIiIiIiUkQkJCRQtWrVwg6jUKln4k2UKlUKgBMnTlC8ePFCjkZE8rp8+TLe3t6cPHkSd3f3wg5HRK6jHBUpupSfIkWbclSk6Lp06RKVKlUy14seZiom3oSNTc7jJIsXL64f4iJFlLu7u/JTpAhTjooUXcpPkaJNOSpSdOXWix5mugMiIiIiIiIiIiJiFRUTRURERERERERExCoqJt6Eo6Mj48ePx9HRsbBDEZHrKD9FijblqEjRpfwUKdqUoyJFl/LzT5rNWURERERERERERKyinokiIiIiIiIiIiJiFRUTRURERERERERExCoqJoqIiIiIiIiIiIhVVEwUERERERERERERq6iY+ACJiIjA39+/sMMQKRCTycTKlSsLOwwReUDpd6PI38+DPn368MQTT9yxeEQeREXh901wcDCvvvqqVfv6+PgQGRl5V+MRKUxFISdvJzo6GpPJxMWLF2+774IFCyhRosRdj8laKiY+QF577TWioqLMy3rjJ3Ln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8PBwGjZsSPv27QkODjb/Ie1OMJlMrFy5kpIlS9KqVSvatWtH1apVWbZsGZDzSJDz58/Tq1cvHnnkEbp3706HDh144403gJyRNK+88gq1atXiH//4BzVq1LD4XS5ijaKWk9Z+7nruuefYt28fLVu2pFKlSub1f+f9ujWeeOIJpk+fzpQpU6hduzazZ8/m008/NT+XsUSJEsydO5fmzZtTr149oqKi+O9//0vp0qUpUaIEX3/9NW3atKFWrVp8/PHHLFmyhNq1a1vdvsnI70FmNxEcHIy/vz+RkZEFvU4R+ZuUfzeXmJhIlSpV2Lt3L/7+/oUdjsgd8TDkfEREBCtXrrzrjxMREREREZE7R38CFBEREREREREREauomHgPLFq0yGI68bxfBelGKiJFT+3atW+a34sWLSrs8ERERETkIbNp06abvj91dXUt7PBEJB8dOnS4ac6+/fbbhR3eDQo0zFn+mj/++INff/0132329vZUrlz5HkckInfK8ePHycjIyHebp6cnbm5u9zgiEREREXmYXb16ldOnT990u6+v7z2MRkSscfr0aa5evZrvtlKlSlGqVKl7HNGtqZgoIiIiIiIiIiIiVtEwZxEREREREREREbGKiokiIiIiIiIiIiJiFRUTRURERERERERExCoqJoqIiIiIiIiIiIhVVEwUERERERERERERq6iYKCIiIiIiIiIiIlZRMVFERERERERERESs8n/gLPdEo5u8vAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams[\"figure.figsize\"] = [15, 5]\n",
    "\n",
    "ax = pd.plotting.parallel_coordinates(\n",
    "    experiment_df.reset_index(level=0),\n",
    "    \"run_name\",\n",
    "    cols=[\n",
    "        \"param.num_units\",\n",
    "        \"param.dropout_rate\",\n",
    "        \"param.epochs\",\n",
    "        \"metric.loss\",\n",
    "        \"metric.val_loss\",\n",
    "        \"metric.eval_loss\",\n",
    "    ],\n",
    "    color=[\"blue\", \"green\", \"pink\", \"red\"],\n",
    ")\n",
    "ax.set_yscale(\"symlog\")\n",
    "ax.legend(bbox_to_anchor=(1.0, 0.5))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WTHvPMweMlP1"
   },
   "source": [
    "## Visualizing experiments in Cloud Console"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "F19_5lw0MqXv"
   },
   "source": [
    "Run the following to get the URL of Vertex AI Experiments for your project.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "id": "GmN9vE9pqqzt"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vertex AI Experiments:\n",
      "https://console.cloud.google.com/ai/platform/experiments/experiments?folder=&organizationId=&project=qwiklabs-gcp-00-367d77ca87e3\n"
     ]
    }
   ],
   "source": [
    "print(\"Vertex AI Experiments:\")\n",
    "print(\n",
    "    f\"https://console.cloud.google.com/ai/platform/experiments/experiments?folder=&organizationId=&project={PROJECT_ID}\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TpV-iwP9qw9c"
   },
   "source": [
    "## Cleaning up\n",
    "\n",
    "To clean up all Google Cloud resources used in this project, you can [delete the Google Cloud\n",
    "project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#shutting_down_projects) you used for the tutorial.\n",
    "\n",
    "Otherwise, you can delete the individual resources you created in this tutorial:\n",
    "\n",
    "- Experiment (Can be deleted manually in the GCP Console UI)"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "sdk-metric-parameter-tracking-for-locally-trained-models.ipynb",
   "toc_visible": true
  },
  "environment": {
   "kernel": "python3",
   "name": "tf2-gpu.2-6.m97",
   "type": "gcloud",
   "uri": "gcr.io/deeplearning-platform-release/tf2-gpu.2-6:m97"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
